草庐IT

C++ 指向 vector 的指针

全部标签

c++ - 指针和 std::string - 奇怪的行为 - C++

我提前道歉,因为我在之前的帖子中问过同样的问题,但正如有人正确指出的那样,我没有发布真正的代码。因此,我再次问同样的问题,试图比以前更清楚。作为练习,我正在创建一个操作字符串的程序。特别是,我想删除包含在2个“*”之间的部分字符串。我必须强调,我已经使用库字符串的函数成功地创建了相同的程序;事实上,问题涉及使用char指针对给定字符串的操作。我将发布完整的代码并进行深入讨论。#include#includeusingnamespacestd;intmain(){stringfrase;getline(cin,frase);//Takesasinputthephraseintsize=f

c++ - Xcode C++ vector : Implicit instantiation of undefined template

我在不同的IDE上运行这段代码,它成功了。出于某种原因,我在Xcode上收到上述错误消息。我假设我缺少某种标题,但我不确定是哪一个。#include#include#include#includeintmain(){vectorlistRestaurants;//error:Implicitinstantiationofundefinedtemplatereturn0;} 最佳答案 Xcode10.2.1向我展示了错误Implicitinstantiationofundefinedtemplate'std::__1::vector,

C++ - 替代基类函数指针调用

我发现很多帖子都非常清楚地说明派生类函数不能被分配给基类函数指针。所以我想知道如何处理和解决以下情况:假设我有以下基类classbase{protected:typedefvoid(base::*base_fp)();typedefstd::maparray;arrayassociativeArray;};这个类的主要目的是拥有一个“associative-arrayoffunctions”属性。所以我想要的是每个派生的child都能够将他们的方法添加到“associativeArray”this->associativeArray["Method"]=&child::method;/

c++ - 模板函数中的输出 vector <T>

这段代码报错:templatevoidprint_vector(vector&v,stringsep){std::ostream_iteratorostr_it(std::cout,sep);std::copy(begin(v),end(v),ostr_it);}main.cpp:17:30:error:nomatchingconstructorforinitializationof'std::ostream_iterator'std::ostream_iteratorostr_it(std::cout,sep);我很困惑,因为如果我在模板函数之外执行并直接输出vector,则没有错误

c++ - 有没有办法在递归中使用指针来查找数组的最小值?

首先,我是一个初学者,所以如果这个问题看起来有点愚蠢,我提前道歉。我确实知道一种使用递归来查找数组中最小值的方法,如下所示。intfindMinRec(intA[],intn){if(n==1)returnA[0];returnmin(A[n-1],findMinRec(A,n-1));}但是,我正在尝试找出一种使用递归和指针的方法。像这样:constint*min(constintarr[],intarrSize){有没有简单的方法可以做到这一点?我尝试以标准方式重新设计,但我似乎无法弄清楚如何使用指针来完成此操作。 最佳答案 您

c++ - std::transform 以两个 std::vector 和一个常量作为参数

我想使用std::transform做一些类似于binary_op的事情,但有一个额外的常量,例如,得到两个vector的乘积:x1=(10,20,30,40,50)和x2=(2,4,6,8,10),我们可以写成:#include#include#includedoublemultiply(doublex,doubley){returnx*y;}intmain(){std::vectorx1;std::vectorx2;for(inti=1;i::iteratorit=x1.begin();it!=x1.end();++it)std::cout以上代码将按元素乘以x1和x2并返回(20

c++ - 如何有效地比较相似名称的多个结构 vector ?

我正在为我的妻子编写一个程序,以帮助我们尝试决定她应该申请哪些医学院。但是,我遇到了一个问题,我试图提取在4种不同情况下出现在前20名结果中的学校。例如,在其中一个案例中,我将城市的收入中位数除以城市的平均房价。这会返回一个double,然后我创建一个新vector,然后根据该数字从最高到最低对该vector进行排序。我对池中的其他3个vector执行类似的操作,并应用不同的案例。我知道我可以强制执行此操作并使用嵌套的for循环提取名称,但我很想知道是否有一种方法可以快速有效地完成此操作。到目前为止,这是我的尝试。(注意,这只是一个例子,我的实际代码里面有30所学校)。#include

python - C++ - argsort 的 vector 版本实现与 numpy 中的相比效率低

这是我做的比较。np.argsort在包含1,000,000个元素的float32ndarray上计时。In[1]:importnumpyasnpIn[2]:a=np.random.randn(1000000)In[3]:a=a.astype(np.float32)In[4]:%timeitnp.argsort(a)86.1ms±1.59msperloop(mean±std.dev.of7runs,10loopseach)这里是一个C++程序执行相同的过程,但在引用thisanswer的vector上.#include#include#include#include#include#i

c++ - 如何在此指针上应用限制限定符

如何将GCC/Clang的__restrict__限定符应用于类的this指针?这个问题的灵感来自RichardPowell的CppCon2018演讲,“HowtoArgue(ment).”我看到了一个类似的问题“restrictqualifieronmemberfunctions(restrictthispointer).”(所有代码都可以在CompilerExplorer上找到)voidbar();classFoo{public:intthis_example()const{if(value>0){bar();returnvalue;}else{returnvalue;}}priv

c++ - 是否可以让 std::vector<char> 使用选定的内存对齐方式分配内存

我正在将进程的内存复制到vector中缓冲区,并希望为此vector分配的内存具有比默认值更高的对齐方式。这是因为我正在该缓冲区中寻找任意类型的模式,其中内存可以代表任何东西-我希望我正在寻找的任何值/类型对都根据它的类型对齐。也许我可以使用“偏移量”来解决这个问题,但我宁愿让我的字符缓冲区对齐。除了创建vector之外,还有什么办法可以做到这一点吗?相反? 最佳答案 我可以使用自定义分配器解决我的问题。boost::alignment::aligned_allocator示例#include#includetemplateusin